package page

// Request
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
// PaginationParam 分页查询条件
type PaginationParam struct {
	Pagination bool `form:"-"`        // 是否使用分页查询
	OnlyCount  bool `form:"-"`        // 是否仅查询count
	Current    uint `form:"current"`  // 当前页
	PageSize   uint `form:"pageSize"` // 页大小
}

// GetCurrent 获取当前页
func (a PaginationParam) GetCurrent() uint {
	current := a.Current
	if current == 0 {
		current = 1
	}
	return current
}

// GetPageSize 获取页大小
func (a PaginationParam) GetPageSize() uint {
	pageSize := a.PageSize
	if pageSize == 0 {
		pageSize = 10
	} else if pageSize > 100 {
		pageSize = 100
	}
	return pageSize
}

// Response
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
// ListResult 响应列表数据
type ListResult struct {
	List       interface{}       `json:"list"`
	Pagination *PaginationResult `json:"pagination,omitempty"`
}

// PaginationResult 分页查询结果
type PaginationResult struct {
	Total    int  `json:"total"`
	Current  uint `json:"current"`
	PageSize uint `json:"pageSize"`
}
